#include<iostream>
using namespace std;
void example_p55();
void example_p58();
void example_p58_1();
void example_2_30();
int main()
{
	example_p58();
	return 0;
}
void example_p55()
{
	int ival=42;
	const int &ri=ival;
	ival=47;
	cout<<ri<<endl;
	const int *p;
}
void example_p58_1()
{
	//顶层const指针的情况:
	int ival=42;
	int *p=&ival;
	//用普通指针去初始化顶层const指针
	int *const ptr=p;
	int *p1=nullptr;
	//将顶层const作为右值去执行赋值
	p1=ptr;
	//顶层const普通变量的情况:
	const int ci=ival;//用普通int去给const int初始化
	int ival1=0;
	//将顶层const作为右值去给普通const赋值
	ival1=ci;
}
void example_p58()
{
	const int ci=42; 
	const int ci1=45;
	int ci2=18;
	int *p4=&ci2;
	const int *const p3=&ci1;
	const int *p2=&ci;
	p2=p4;

}
void practice_2_30()
{
	const int v2=0;
	int v1=v2;
	int &r1=v1;
	r1=v2;
	int *p1=&v1;
	const int *p2=&v2,*const p3=&v1;
	p2=p3;
	//int null=0,*p=null;
}
